package com.bems.action;

import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.apache.commons.lang.time.DateUtils;

import com.bems.jdbc.common.DBManager;
import com.bems.jdbc.common.QueryHelper;
import com.bems.pojo.Bill;
import com.bems.pojo.POJO;
import com.bems.pojo.User;
import com.bems.service.BillService;
import com.bems.util.PageUtil;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

import cn.org.ape.BaseAction;

public class BillAction extends BaseAction
{
	private String starttime;//开始时间
	private String endtime;//结束时间
	private String type_id;//类型
	private String supply_id;//供应商
	private int limit;
	private int page;
	
	BillService billService = new BillService();
	
	
	/**
	 * 账单
	 */
	public void list()
	{
	
		JsonObject jsonObject = new JsonObject();	
		if(StringUtils.isBlank(starttime)){
			starttime=DateFormatUtils.format(DateUtils.addMonths(new Date(), -3), "yyyy-MM-00 00:00:00");//开始时间
		}else {
			starttime = starttime+" 00:00:00";
		}
		if(StringUtils.isBlank(endtime)){
			endtime=DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");//结束时间  （当前时间）
		}else {
			endtime = endtime+" 59:59:59";
		}
		
		Map<String, Object> map = new HashMap<String, Object>();
		if(StringUtils.isNotBlank(type_id))
			map.put("type_id", type_id);
		if(StringUtils.isNotBlank(supply_id))
			map.put("supply_id", supply_id);
		PageUtil pageutil=billService.list(starttime, endtime, page, limit, map);
		jsonObject.addProperty("totalCount", pageutil.getTotalpage());
		//	jsonObject.addProperty("totalCount", 100);
		JsonArray jsonArray= new JsonArray();
		List<Bill> bills = (List<Bill>) pageutil.getList();
		//封装list中的json
		for (Bill bill : bills) {
			Gson gson = new Gson();
			JsonElement element =gson.toJsonTree(bill);
			JsonObject json = element.getAsJsonObject();
			
			json.addProperty("list_id", bill.List()!=null?bill.List().getNumber():"");//清单号
			json.addProperty("type_id", bill.Type()!=null?bill.Type().getName():"");//类型
			json.addProperty("supply_id", bill.Supply()!=null?bill.Supply().getName():"");//类型
			jsonArray.add(json);
		}
		
		jsonObject.add("resultList", jsonArray);
		DBManager.closeConnection();

		printJson(jsonObject.toString());
		
	}
	
	
	public void info()
	{
		JsonObject jsonObject = new JsonObject();
		if(StringUtils.isBlank(starttime))
			starttime=DateFormatUtils.format(DateUtils.addMonths(new Date(), -3), "yyyy-MM-00 00:00:00");//开始时间
		if(StringUtils.isBlank(endtime))
			endtime=DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");//结束时间  （当前时间）
		Map<String, Object> map = new HashMap<String, Object>();
		if(StringUtils.isNotBlank(type_id))
			map.put("type_id", type_id);
		if(StringUtils.isNotBlank(supply_id))
			map.put("supply_id", supply_id);
		PageUtil pageutil=billService.list(starttime, endtime, page, limit, map);
		jsonObject.addProperty("total", pageutil.getTotalpage());
		jsonObject.addProperty("starttime", starttime);
		jsonObject.addProperty("endtime", endtime);
		jsonObject.addProperty("cost", billService.cost(starttime, endtime, map));
		DBManager.closeConnection();
		printJson(jsonObject.toString());
	}

	
	
	
	
	
	public static void main(String[] args) {
		Date starttime = DateUtils.addMonths(new Date(), -0);
		System.out.println(DateFormatUtils.format(starttime, "yyyy-MM-dd HH:mm:ss"));
	}
	
	
	public String getStarttime() {
		return starttime;
	}

	public void setStarttime(String starttime) {
		this.starttime = starttime;
	}

	public String getEndtime() {
		return endtime;
	}

	public void setEndtime(String endtime) {
		this.endtime = endtime;
	}

	public String getType_id() {
		return type_id;
	}

	public void setType_id(String type_id) {
		this.type_id = type_id;
	}

	public String getSupply_id() {
		return supply_id;
	}

	public void setSupply_id(String supply_id) {
		this.supply_id = supply_id;
	}

	public int getLimit() {
		return limit;
	}

	public void setLimit(int limit) {
		this.limit = limit;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}

	
}
